package test_pkg

import (
	"fmt"
	"net"
)

//一个简单的 go tcp 服务端
//net 包提供了一个提供网络访问的接口  常用的 Dial (客户端连接服务端) Listen (监听本地网络端口) Accept (读取请求数据)

func Run_server() {
	fmt.Println("Starting the server ...")
	//listen 监听本地网络请求 func Listen(network, address string) (Listener, error)
	//The network must be "tcp", "tcp4", "tcp6", "unix" or "unixpacket"
	Listener, err := net.Listen("tcp", "localhost:5000")
	if err != nil {
		fmt.Println("Error listening", err.Error())
		return //终止程序
	}

	//监听客户端发送的数据
	for {
		// Wait for a connection.
		conn, err := Listener.Accept()
		if err != nil {
			fmt.Println("Error accepting", err.Error())
			return
		}

		go tcp_server(conn)
	}

}

func tcp_server(conn net.Conn) {
	for {
		buffer := make([]byte, 512)
		len, err := conn.Read(buffer)
		if err != nil {
			fmt.Println("Error reading", err.Error())
			return
		}

		fmt.Printf("Received data %q", buffer[:len])
	}
}
